#include <stdio.h>
#include <stdlib.h>
#include <string.h>

 
void comprar(char argv[])
{
        int escrita= cria_semaforo("esc",1); //declaracao semaferos
        int lei=cria_semaforo("lei",20);
	FILE *f,*f2;
	if((f=fopen("fic.txt","r+"))==NULL){ //abertura de ficheiros
         printf("Ficheiro nao existe\n");
         exit(2);
        }
        if((f2=fopen("tab.txt","r+"))==NULL){
            printf("Ficheiro nao existe\n");
            exit(2);
            }

        int nml=qualel(argv[1]); //qual a linha da tabela
	char Nome[20];
	int quant,i,e,v;
	long nlmed,nlmed2,linha;
	
	
	P(escrita);   //reservar semafero de escrita e leitura
        for(i=0;i<20;i++) P(lei);
	for(i=0;i<=nml;i++) fscanf(f2,"%lu",&nlmed); //ler a linha na tab

	fscanf(f2,"%lu",&nlmed2);
	linha=nlmed*28; //calcular numero de bytes a saltar
	fseek(f,linha, SEEK_SET);
	fscanf(f,"%s%d%d",Nome,&quant,&v);
		
	e=eigual(Nome,argv[1]); //ciclo de leitura e comparação
	while(e!=0&&nlmed<nlmed2)
		{fscanf(f,"%s%d%d",Nome,&quant,&v);
		e=eigual(Nome,argv[1]);
		nlmed++;
		}
	fclose(f);
	fclose(f2);
	
	if((quant-atoi(argv[2]))<0) //verificar se existe quantidade suficiente
	{printf("quantidade insuficiente\n");
	
	}
        else if(e!=0){  //caso nao exista
	printf("nao encontrado");
	
	}
        else insere(Nome,quant,argv[2],nlmed, v); //se existe insere
	
	
        V(escrita);
        for(i=0;i<20;i++) V(lei);

 }

void coloca(char Nome[],int quanta, char quant[], long linha, int v)
{	
	char a[1];
	FILE *f,*f2;
	char Nome2[20];
	v=v+atoi(quant); //update da quantidade vendida
	printf("%d\n",v);
	quanta=quanta-atoi(quant); //quantidade a inserir
	int i,e=1,tag=0, conta=0, p,v2=0, c=strlen(Nome)+tamn(quanta)+tamn(v);
	linha=linha*28; //calculo dos bytes a saltar
	f=fopen("fic.txt","r+");
	fseek(f,linha, SEEK_SET); //salta para posicao
	i=26-c;
	char u[i];
	for(p=0;p<i;p++) u[p]=' ';//ciclo cria string de espaços para manter o tamanho da linha
	u[p]='\0';
	fprintf(f,"%s%s%d %d\n",Nome,u,quanta,v); //insere nova linha
	fclose(f);
	system(" >temp2.txt");
	f=fopen("topv.txt","r");
	f2=fopen("temp2.txt","r+");
	
	while((fscanf(f,"%s %d",Nome2,&v2))!=EOF) //atualizar o top de vendas
	{
		e=eigual(Nome,Nome2); //le cada entrada e compara o valor de vendas
                                        //serao inseridos apenas 50 valores
		if(v>=v2&&conta<50&&tag==0){
			fprintf(f2,"%s %d\n",Nome, v);
			conta++;
			tag++;
		}	
		if(e!=0&&conta<50)
			{fprintf(f2,"%s %d\n", Nome2, v2);
			conta++;
			}
	}
	if(tag==0&&conta<50) fprintf(f2,"%s %d\n",Nome, v);
	fclose(f);
	fclose(f2);
	system("mv temp2.txt topv.txt");


}








